/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sacodemel.financeiro.servico.impl;

import com.sacodemel.financeiro.modelo.RegistroCaixa;
import com.sacodemel.financeiro.modelo.dto.TotalDTO;
import com.sacodemel.financeiro.persistencia.dao.impl.FluxoDeCaixaDAO;
import com.sacodemel.financeiro.persistencia.dao.IFluxoDeCaixaDAO;
import com.sacodemel.financeiro.servico.IFluxoDeCaixaService;
import com.sacodemel.financeiro.util.Constantes;
import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 *
 * @author X4Q1
 */
public class FluxoDeCaixaService implements IFluxoDeCaixaService, Serializable {

    IFluxoDeCaixaDAO fluxoDeCaixaDAO = new FluxoDeCaixaDAO();
    
    public List<RegistroCaixa> obterFluxoDeCaixa(String filtroTipoRegistro, String filtroPalavraChave, Date filtroDataInicio, Date filtroDataFim, String filtroTipoReceita, String filtroInvestidor) throws Exception {

        this.validaPesquisa(filtroDataInicio, filtroDataFim);

        return fluxoDeCaixaDAO.obterFluxoDeCaixa(filtroTipoRegistro, filtroPalavraChave, filtroDataInicio, filtroDataFim, filtroTipoReceita, filtroInvestidor );
    }
    
    public List<RegistroCaixa> obterTodosRegistros() throws Exception {
        return fluxoDeCaixaDAO.listarTodos();
    }


    private void validaPesquisa(Date filtroDataInicio, Date filtroDataFim) throws Exception {

        if (filtroDataInicio != null && filtroDataFim == null
                || filtroDataInicio == null && filtroDataFim != null) {
            throw new Exception("O Período não está com preenchimento completo.");
        }

    }

    @Override
    public TotalDTO retornarTotalizadores(List<RegistroCaixa> listaRegistrosCaixa) {

        TotalDTO total = new TotalDTO();

        for (RegistroCaixa registroCaixa : listaRegistrosCaixa) {
            if (Constantes.REGISTRO_DESPESA.equals(registroCaixa.getTipoRegistroCaixa())) {
                total.setTotalValor(total.getTotalValor() - registroCaixa.getValor());
            } else if (Constantes.REGISTRO_RECEITA.equals(registroCaixa.getTipoRegistroCaixa())){
                total.setTotalValor(total.getTotalValor() + registroCaixa.getValor());
            }

        }

        return total;
    }

  
}
